Many prior art computer systems are configured at a minimum typically with a processor, a random access memory device, and a read only memory device. Some systems, such as a variety of calculators, may operate with only a processor and a read only memory device. Read only memory devices (ROM) and some forms of random access memory devices provide a non-volatile form of memory that is not destroyed when power is removed from the computer system.
Prior art computer systems are typically bootstrapped (i.e. power up initialized) using the processing logic (i.e. firmware) stored within the read only memory device internal to the computer system. Since the read only memory device is non-volatile, the firmware within ROM is guaranteed to contain valid data or instructions; thus, the prior art computer system can be reliably bootstrapped using firmware within ROM. Upon execution of the firmware within ROM at computer system power up, bootstrap firmware logic typically initiates a series of diagnostic tests to determine the operational status of computer system resources. One of these diagnostic tests is typically run on the available random access memory. Since typical prior art computer systems have a volatile form of random access memory, for example dynamic random access memory (DRAM), the initial content of random access memory at computer system power up is uninitialized and useless. In order to validate the operational integrity of random access memory, firmware processing logic typically exercises random access memory by executing a series of data write instructions followed by data read instructions in order to determine if the random access memory device is able to retain data. Once the random access memory diagnostic tests are completed, ROM bootstrap firmware performs the task of loading random access memory with an operating program. Typically, the operating program is read by firmware from a disk or tape data storage device and transferred to a predetermined location in random access memory. Once the loading of random access memory is completed, the bootstrap process is completed by the transfer of execution control to a starting position within the operating program now stored in random access memory. In this way, an internal ROM is used to initially bootstrap the prior an computer system.
Some form of internal read only memory is often used in prior art computer systems for other purposes in addition to bootstrapping. For example, read only memory is used for storing an identity code that uniquely identifies the computer system. In other systems, configuration data is stored in read only memory in order to retain a particular preset user configuration or a set of constant system parameters. Thus, for a variety of reasons, prior art computer systems include some form of read only memory.
There are several problems associated with using internal read only memory for bootstrapping or configuring a computer system. The read only memory used in prior art computer systems is typically comprised of one of a variety of available devices (i.e. ROM, PROM, EPROM, EEPROM) in the form of an integrated circuit chip. In order to modify or upgrade the firmware contained in ROM, the ROM chip must be physically removed from a circuit board internal to the computer system. Another ROM chip containing the upgraded or modified firmware is then inserted into a socket or soldered into a circuit board of the computer system. This process of upgrading firmware is time consuming, expensive, and likely to introduce other problems as a circuit board is handled in the ROM replacement process. Additionally, configuration control problems are introduced when ROM firmware is used. Since firmware in particular computer systems may be slightly different, a high level of configuration control is necessary in the manufacturing, distribution, and field service of computer system products. Mass production and servicing of computer systems becomes more difficult when individual units are not uniformly configured.
A better means and method is needed for bootstrapping a computer system.